// main.go
package main

import (
	"gorm_project/config"
	"gorm_project/models"
	"gorm_project/routes"
	"log"

	"gorm.io/gorm"
)

func main() {
	// 加载配置
	cfg := config.LoadConfig()

	// 初始化数据库
	config.InitDB(cfg)

	// 自动迁移
	db := config.GetDB()
	err := db.AutoMigrate(
		&models.User{},
		&models.Article{},
		&models.Category{},
		&models.Tag{},
	)
	if err != nil {
		log.Fatal("数据库迁移失败:", err)
	}

	// 创建默认管理员用户
	createDefaultAdmin(db)

	// 设置路由
	router := routes.SetupRouter(cfg)

	// 启动服务器
	log.Printf("服务器启动在端口 %s", cfg.ServerPort)
	if err := router.Run(":" + cfg.ServerPort); err != nil {
		log.Fatal("服务器启动失败:", err)
	}
}

func createDefaultAdmin(db *gorm.DB) {
	var count int64
	db.Model(&models.User{}).Count(&count)

	if count == 0 {
		admin := &models.User{
			Username: "admin",
			Email:    "admin@myblog.com",
			Password: "admin123",
			Nickname: "管理员",
			Role:     "admin",
		}
		admin.HashPassword()

		if err := db.Create(admin).Error; err != nil {
			log.Printf("创建默认管理员失败: %v", err)
		} else {
			log.Println("默认管理员创建成功: admin/admin123")
		}
	}
}
